#pragma once
#include <string>
#include <iostream>

#include <cg\cg.h>
#include <cg\cggl.h>	



//how do arrays in shaders????

class Shader
{
private:
	static CGcontext cgContext;
	static CGprofile cgVertexProfile;
	static CGprofile cgFragmentProfile;

	static unsigned float timer1;

	CGprogram cgVertexProgram;
	CGprogram cgFragmentProgram;
protected:
	CGparameter mvp; //model view multiplied by projection matrix
	CGparameter sTimer1; //timer, goes up. Interpolated.


public:

	Shader();
	Shader(std::string path);
	Shader(std::string path, std::string mainFunction, bool isFragmentShader);
	Shader(std::string pathVert, std::string mainVert, std::string pathFrag, std::string mainFrag);
	~Shader(void);

	static void initializeShaderContext();
	static void destroyShaderContext();
	static void updateTimers();



	void enable();
	void disable();
};
